文章目录
  1. 1. 身份认证流程
  2. 2. 用户和访问权限管理
    1. 2.1. 用户注册
    2. 2.2. 向外部应用提供用户信息
    3. 2.3. 将第三方登陆的账号加入user store

WSO2 Identity Server为企业WEB应用提供复杂的身份管理及安全认证服务。以下是wso2的架构图。一开始看这个架构图可能会有些困惑,箭头很杂乱,不知所云。为了方便理解,可以把以下架构图分为两部分来看。一部分是身份认证流程,另一部分是用户和访问权限管理框架。

wso2is 架构图

身份认证流程

首先,Service Provicers是用来配置web应用的,也就是把你的wep app与wso2 is联系起来,当然你的应用要按照wso2 is规定的规范来实现登陆,登陆方式支持SAML SSO、OAuth/OpenID Connect、Passive STS、OpenID等。
当用户要访问Service Providers中的应用时,Service Providers将授权请求消息传送给Inbound Authentication。Inbound Authentication主要有两个组件Request Processor和Response Builder。Request Processor用来处理Service Provider的授权请求。例如,SAML Request Processor处理SAML的授权请求,然后处理成authentication framework可接受的请求。另外,authentication framework接受的请求是与协议无关的,也就是说,Request Processor会接受各种协议的请求类型,之后处理成统一的authentication framework可接受的请求格式。
authentication framework接受到请求之后的工作就是claim映射,claim是在service provider和Identity Provider中配置的。claim的官方描述是对身份信息的一种通用的定义。之后,authentication framework就是要将映射后的请求转交给Local Authentication或者是Federated Authentication,这就要看用户要登陆的这个Service Provider是如何配置的。
验证方式配置
Local Authentication很容易理解,就是将请求与user store中的用户信息匹配,是wso2 is中直接支持的验证方式,而Federated Authentication并不是wso2 is中的所支持的验证,需要配置额外的应用来支持验证,具体做法就是自己配置一个identity provider,对identity provider就是在这个地方使用的…
多数情况下我们还是使用Local Authentication。Local Authentication支持两种验证,也都很好理解,一个是username/password方式,另一个则是iwa方式(iwa其实是就使用windows账户来登陆)。显然Local Authentication接下来就是要从user store中读取用户信息,在user store manager模块实现了三种访问方式LDAP、AD、JDBC,在添加每个user store的时候都可以选择这三种方式中的一种。例如,我使用MySql数据库,选用JDBC访问方式添加一个user store。
jdbc配置
Local Authentication验证完成之后会通知框架,框架检查若不需要其他验证(可以配置多次不的验证),则将控制权转交给Inbound Authentication中的Response Builder,由Response Builder给end-user一个回应。
至此,验证流程结束。涉及的组件有Service Provider、Inbound Authentication、authentication framework、Local Authentication/Federated Authentication、User Store Manager。其余的都可以看作用户和访问权限管理了。
授权流程
接下来,分析一下架构图中其他箭头表示的作用。

用户和访问权限管理

用户注册

在service provider某应用上注册用户(end-users),注册信息交由Inbound Provisioning处理,Inbound Provisioning支持SOAP和SCIM(都是用于网络中交换数据),然后,Inbound Provisioning连接User Store Manager进行存储。
用户注册

向外部应用提供用户信息

向外部应用提供用户信息
wso2 is支持向外部系统提供用户信息,例如,Google App Engine。需要配置一个identity provider,并与一个service provider联系起来,由该service provider提供服务。

将第三方登陆的账号加入user store

当一个service provider由第三方账户登陆时,Authentication Framework的JIT(Just-In-Time)判断该账户是否存在user store中,如果没有,JIT就把此账户信息传递给provisioning framework,随后添加到user store中,存储到哪个user store,在Identity Provider的配置中可以选择。
将第三方登陆的账号加入user store

详细介绍可参考官方文档
个人觉得官方文档内容比较全面,但是讲述逻辑不够清晰,容易导致理解进入误区,搞清楚每个组件的功能之后,再来看整个架构就简单多了

文章目录
  1. 1. 身份认证流程
  2. 2. 用户和访问权限管理
    1. 2.1. 用户注册
    2. 2.2. 向外部应用提供用户信息
    3. 2.3. 将第三方登陆的账号加入user store